603 lượt đọc
603 lượt đọc

Hack Android bất hợp pháp này sẽ làm cho bạn trở thành cha mẹ tốt hơn

từ tác giả Sergei Shaikin14m2025/04/16
Read on Terminal Reader

dài quá đọc không nổi

Nghịch lý giấc ngủ kỹ thuật số là một vấn đề mà không ai nói về. Hàng triệu người bây giờ rơi vào giấc ngủ với các video YouTube, podcast hoặc các ứng dụng phát trực tuyến. tôi đã xây dựng một kịch bản kết nối với thiết bị Android của bạn không dây và theo dõi âm lượng của nó.
featured image - Hack Android bất hợp pháp này sẽ làm cho bạn trở thành cha mẹ tốt hơn
Sergei Shaikin HackerNoon profile picture
Thì

Tuyên bố miễn trừ trách nhiệm: Bài viết này chỉ dành cho mục đích giáo dục.Đừng vi phạm luật pháp, hãy tử tế với con cái của bạn, và đừng quên rằng bạn chịu trách nhiệm về những gì bạn làm với thiết bị của riêng bạn.

Thì

Tuyên bố miễn trừ trách nhiệm: Bài viết này chỉ dành cho mục đích giáo dục.Đừng vi phạm luật pháp, hãy tử tế với con cái của bạn, và đừng quên rằng bạn chịu trách nhiệm về những gì bạn làm với thiết bị của riêng bạn.

Vấn đề không ai nói về

Trong một thời đại mà màn hình thống trị thói quen đi ngủ, hàng triệu người hiện đang ngủ với video YouTube, podcast hoặc các ứng dụng phát trực tuyến.


Tuy nhiên, thói quen này có một chi phí ẩn: tiếp xúc với âm lượng không kiểm soát được, đặc biệt là đối với trẻ em.Là cha mẹ và nhà phát triển, tôi đã phải đối mặt với vấn đề này bằng tay đầu tiên - các trò chơi YouTube đêm muộn của con tôi đã dẫn đến giấc ngủ không yên và khó chịu vào buổi sáng.


Các ứng dụng miễn phí trong Google Play Store, chẳng hạn nhưVolume giới hạn,Volume kiểm soátCó lẽ các ứng dụng thương mại sẽ tốt hơn, nhưng tôi đã không thử nghiệm điều này vì chúng tốn tiền, thường khá nhiều.

The Hack (Hoàn toàn bất hợp pháp...ish)

Tôi đã xây dựng một kịch bản kết nối với thiết bị Android của bạn không dây và giữ một mắt trên âm lượng của nó. Nếu nó trở nên quá lớn — nó nhẹ nhàng hạ thấp nó. Không video dừng lại, không màn hình nhấp nháy, không tương tác người dùng. chỉ là phép thuật yên tĩnh.


Có, về mặt kỹ thuật, nó sử dụng ADB (Android Debug Bridge) trên Wi-Fi, đó là một công cụ của nhà phát triển và không dành cho cha mẹ khi đi ngủ.

Setting Up Your Development Environment

Thiết lập một môi trường phát triển và kết nối là rất quan trọng trước khi lặn vào mã. Điều này sẽ đảm bảo bạn có tất cả các công cụ và thư viện cần thiết, làm cho quá trình phát triển trở nên hợp lý hơn.


Tôi sử dụng macOS, vì vậy tất cả các ví dụ trong câu chuyện sẽ với hệ thống này, nhưng sử dụng Windows không làm cho quá trình khó khăn hơn nhiều so với macOS. sự khác biệt duy nhất là trong hệ điều hành macOS, Python đã được cài đặt, và trong Windows, bạn sẽ phải cài đặt Python từ đây:Hệ điều hành Windows Python

Dưới đây là một phân chia chi tiết hơn:

    Thì
  1. Download and Extract Platform Tools: Go to the official Android Developers website: Navigate to Android SDK Platform-Tools. Download the SDK Platform Tools: Download the latest version for your operating system (Windows, macOS, or Linux). Extract the ZIP file: Extract the downloaded ZIP file to a location of your choice (e.g., C:\adb on Windows).
  2. Thì
  3. Add Platform Tools to your System's PATH: Windows: Open the "Environment Variables" settings (Search for "Environment Variables" in the Start menu). Click "Edit the system environment variables". Click "Environment Variables". In the "System variables" section, find the "Path" variable, select it, and click "Edit". Click "New" and add the path to the platform-tools directory (e.g., C:\adb). macOS/Linux: Open your terminal. Add the path to the platform-tools directory to your shell's configuration file (e.g., ~/.bashrc, ~/.zshrc). Ví dụ: export PATH=$PATH:/path/to/platform-tools export. PATH=PATH:/us/local/bin
  4. Thì
  5. Kiểm tra cài đặt ADB: Mở giao diện dòng lệnh (CLI): Sử dụng Windows Search Bar (Windows OS): Nhấp vào nút Start hoặc biểu tượng kính phóng to trong thanh tác vụ. Nhập "cmd" (không có trích dẫn) trong thanh tìm kiếm. Nhấp vào kết quả "Command Prompt". Để chạy với tư cách quản trị viên, nhấp chuột phải vào "Command Prompt" trong kết quả tìm kiếm và chọn "Run as administrator". Sử dụng Spotlight Search (macOS): Nhấp vào biểu tượng kính phóng to trong thanh menu (hoặc nhấn Cmd+Space). Nhập "Terminal" và nhấp đúp vào nó để mở. Nhập adb và nhấn Enter. adb Nếu adb được cài đặt đúng cách, bạn nên thấy thông điệp trợ giúp ADB.
  6. Thì
  7. Kích hoạt USB Debugging trên thiết bị Android của bạn: Đi đến "Cài đặt" trên thiết bị Android của bạn. Cuộn xuống và chọn "About Phone". Tìm "Build Number" và nhấn nó 7 lần hoặc nhiều hơn để mở khóa Tùy chọn nhà phát triển. Quay trở lại trang "Cài đặt" chính, và bây giờ bạn sẽ thấy "Tùy chọn nhà phát triển". Chọn "Tùy chọn nhà phát triển". Cuộn xuống "USB Debugging" và chuyển sang.
  8. Thì

Từ bây giờ, chúng tôi sẽ chỉ làm việc trong dòng lệnh. Trong trường hợp của tôi, nó sẽ là thiết bị đầu cuối.

Thiết lập kết nối của bạn

Bước tiếp theo sẽ là kết nối thiết bị di động của bạn với PC của bạn.Đây là một bước tương đối đơn giản bao gồm hai phần:


    Thì
  • Kết nối Wire;
  • Thì
  • Kết nối Wireless
  • Thì

Kết nối Wire:

Bạn nên kết nối thiết bị di động của mình với PC bằng cáp (USB A/USB C hoặc USB A/micro USB, v.v.).


Sau đó, bạn mở terminal và nhập lệnh sau:

adb devices

You see my device, which is connected by wire to my personal computer. In your case, this "RF8T60M9SBF" number will be a completely different number.


Hiện tại, chúng tôi đã sẵn sàng cho chế độ TCP/IP với lệnh sau:

adb tcpip 5555


Nếu chúng tôi đã ở trong thiết bị đầu cuối, thì chúng tôi có thể kiểm tra địa chỉ IP của thiết bị di động trong mạng Wi-Fi của chúng tôi mà không nhìn vào thiết bị di động.

adb -d shell "ip route | awk '/wlan0/ {print \$9}'"

My IP address is 10.0.0.108. In your case it will be another one.

Kết nối Wireless:

Bây giờ bạn đã có địa chỉ IP của thiết bị, đã đến lúc kết nối không dây. Không cần kết nối có dây nữa.adb tcpip 5555, bạn có thể an toàn cắm cáp USB. phần còn lại của sự kỳ diệu sẽ xảy ra qua Wi-Fi.


Đảm bảo cả điện thoại thông minh và máy tính của bạn đều trên cùng một mạng Wi-Fi. Sau đó, trong thiết bị đầu cuối của bạn, hãy nhập lệnh sau:

adb connect <DEVICE_IP>:5555


Ví dụ, nếu thiết bị IP của bạn là10.0.0.108Bạn sẽ vào:

adb connect 10.0.0.108:5555


Nếu mọi thứ diễn ra tốt đẹp, bạn sẽ thấy một thông điệp như:

Here we are.

Hãy nói về vấn đề một lần nữa

Chúng ta hãy lùi lại một bước và nhớ lại những gì chúng ta đang giải quyết. Con bạn rơi vào giấc ngủ yên tĩnh khi xem một video yên tĩnh - có thể là một câu chuyện về thời gian ngủ hoặc một số âm thanh thư giãn. Nhưng hai giờ sau đó? Tự động chơi của YouTube bắt đầu, một âm thanh quảng cáo lớn, hoặc một số âm thanh hoạt hình hoạt hình năng lượng cao đánh thức họ. Họ là groggy. Bạn là groggy. Mọi người bắt đầu ngày của họ đã được thoát ra. Điều chúng tôi cần là một người giám hộ thầm lặng - một cái gì đó vô hình và đáng tin cậy. Một hệ thống sẽ nhẹ nhàng giảm âm lượng trong nền mà không dừng lại phát lại, mà không nhấp nháy các cửa sổ bật lên khó chịu, và mà không đánh thức người dùng. Đó chính xác là những gì kịch bản này làm.

Kiến trúc trong một cái nhìn

Dưới đây là một biểu đồ nhanh cho thấy mọi thứ kết nối như thế nào:


Thì

Máy tính của bạn (chạy kịch bản Python) kết nối với thiết bị Android thông qua ADB qua Wi-Fi, theo dõi âm lượng định kỳ và giảm âm lượng nếu cần thiết.

Thì

Máy tính của bạn (chạy kịch bản Python) kết nối với thiết bị Android thông qua ADB qua Wi-Fi, theo dõi âm lượng định kỳ và giảm âm lượng nếu cần thiết.

This minimalistic setup allows for seamless automation:Python Script runs on your laptop or mini PC.


Tác giả: The Script That Does the Magic

Cốt lõi của giải pháp là một kịch bản Python giao tiếp với thiết bị Android của bạn thông qua ADB qua Wi-Fi.


Mỗi 30 giây, nó kiểm tra âm lượng dòng nhạc hiện tại. nếu âm lượng là trên 5 (Android thường sử dụng một quy mô 15 điểm), kịch bản nhẹ nhàng hạ thấp nó - một bước tại một thời điểm, với pauses ngắn.


The best part? It respects manual changes. If someone lowers the volume themselves, the script notices and doesn’t interfere. It’s quiet. It’s adaptive. It’s invisible — just like a good bedtime assistant should be.

The Script’s Evolution: Từ hack nhỏ đến công cụ đáng tin cậy

Khi tôi viết kịch bản này lần đầu tiên, nó hầu như không dài một vài dòng.


Nó trông như thế này:

import subprocess
import time
import re

def get_stream_volume():
    cmd = "adb shell dumpsys audio | awk '/- STREAM_MUSIC:/{flag=1; count=0} flag && count<=5 {print; count++} /^$/{flag=0}'"
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    match = re.search(r'streamVolume:(\d+)', result.stdout)
    return int(match.group(1)) if match else None

def set_volume(level):
    cmd = f"adb shell cmd media_session volume --stream 3 --set {level}"
    subprocess.run(cmd, shell=True)
    print(f"Volume set to {level}")

def monitor_volume():
    while True:
        volume = get_stream_volume()
        if volume is None:
            print("Failed to get volume level. Retrying...")
            time.sleep(5)
            continue

        print(f"Current volume: {volume}")
        
        if volume == 15:
            for vol in range(14, 4, -1):
                set_volume(vol)
                time.sleep(30)
        
        while get_stream_volume() == 5:
            print("Volume is at 5, monitoring every 60 seconds...")
            time.sleep(60)

if __name__ == "__main__":
    monitor_volume()
os.system("adb shell dumpsys audio | grep -i 'streamVolume'")


Điều gì sẽ xảy ra nếu thiết bị ngắt kết nối giữa đêm? Điều gì sẽ xảy ra nếu ADB bỏ thời gian? Điều gì sẽ xảy ra nếu điện thoại không được ghép đôi? Điều gì sẽ xảy ra nếu kịch bản bị hỏng trong khi mọi người đang ngủ?


Và kịch bản đã phát triển.

    Thì
  • Đôi khi, thiết bị không được kết nối, vì vậy tôi đã thêm adb connect ip:port.
  • Thì
  • Sometimes ADB crashed mid-night. I added exception handling and retries.
  • Thì
  • - Đúng vậy! - Hắn cũng nói thêm.
  • Thì
  • File logging và console logging? tất nhiên.
  • Thì
  • Giờ đây, kịch bản cũng theo dõi điều đó - và chỉ can thiệp khi cần thiết.
  • Thì
  • Theo dõi tần số? khoảng thời gian khác nhau cho mức âm lượng cao vs. thấp.
  • Thì
  • Và có, tắt trang nhã Ctrl + C.
  • Thì


Những gì bắt đầu như một vài dòng kịch bản biến thành một con chó con nhỏ bé giám sát điện thoại của bạn - vì vậy bạn không cần phải.

import subprocess
import time
import re
import logging
from datetime import datetime

logging.basicConfig(
    filename='volume_control.log',
    level=logging.INFO,
    format='[%(asctime)s] %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

ADB_DEVICE = "10.0.0.108:5555"

def log(message):
    timestamp = get_timestamp()
    print(f'[{timestamp}] {message}')
    logging.info(message)

def get_timestamp():
    return datetime.now().strftime('%Y-%m-%d %H:%M:%S')

def connect_adb():
    subprocess.run(f"adb connect {ADB_DEVICE}", shell=True)
    log(f"Reconnected to ADB at {ADB_DEVICE}")

def get_stream_volume():
    cmd = "adb shell dumpsys audio | awk '/- STREAM_MUSIC:/{flag=1; count=0} flag && count<=5 {print; count++} /^$/{flag=0}'"
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    match = re.search(r'streamVolume:(\d+)', result.stdout)
    return int(match.group(1)) if match else None

def safe_get_stream_volume(retries=3, delay=5):
    for attempt in range(retries):
        volume = get_stream_volume()
        if volume is not None:
            return volume
        log(f"Attempt {attempt + 1}: Failed to get volume. Retrying after reconnect...")
        connect_adb()
        time.sleep(delay)
    log("All attempts failed. Giving up temporarily.")
    return None

def set_volume(level):
    cmd = f"adb shell cmd media_session volume --stream 3 --set {level}"
    subprocess.run(cmd, shell=True)
    log(f"Volume set to {level}, waiting 30 seconds...")

def monitor_volume():
    while True:
        volume = safe_get_stream_volume()
        if volume is None:
            log("Initial volume read failed. Retrying in 30 seconds...")
            time.sleep(30)
            continue

        log(f"Current volume: {volume}")

        while volume > 5:
            set_volume(volume - 1)
            time.sleep(30)
            volume = safe_get_stream_volume()
            if volume is None:
                log("Failed to read volume during decreasing.")
                break 

        while True:
            volume = safe_get_stream_volume()
            if volume is None:
                log("Failed to read volume during monitoring.")
                time.sleep(30)
                break
            if volume > 5:
                log(f"Volume increased to {volume}, restarting decreasing")
                break
            log(f"Volume is at {volume}, monitoring every 60 seconds...")
            time.sleep(60)

if __name__ == "__main__":
    try:
        monitor_volume()
    except KeyboardInterrupt:
        log("Script stopped by user (Ctrl+C)")
    except Exception as e:
        log(f"Unexpected error: {e}")
    finally:
        log("Script exited.")


Hôm nay, kịch bản là sản xuất cấp - và mã nguồn mở. nhưng hãy chắc chắn để thay đổi dòng này ADB_DEVICE = "10.0.0.108:5555" trong kịch bản với địa chỉ IP của bạn từ“Tạo kết nối của bạn”của

Chạy kịch bản: Hai lựa chọn dễ dàng cũng như Cron

Bạn có hai cách chính để chạy kịch bản:

    Thì
  1. Trực tiếp với Python
  2. Thì


Nếu bạn có Python 3 cài đặt, bạn chỉ có thể chạy:

python3 reduce_volume.py


Nó sẽ bắt đầu ngay lập tức và làm công việc của mình một cách yên tĩnh trong nền.

    Thì
  1. Như một Standalone Executable
  2. Thì


Bạn muốn chia sẻ nó với một người không có Python cài đặt?


Bạn có thể biến kịch bản thành một standalone.appĐối với macOS hoặc.exeWindows, sử dụngPyongyang:

pyinstaller --onefile reduce_volume.py

Điều này sẽ tạo ra một ứng dụng di động có thể được khởi động bằng cách nhấp đúp - không cần Python.


    Thì
  1. Thậm chí lên lịch nó với một công việc cron hoặc lập lịch nhiệm vụ nếu bạn là người hâm mộ.
  2. Thì

Một điều nữa: Giới hạn ADB từ xa

Điều quan trọng cần lưu ý là ADB qua Wi-Fi có thể dễ bị tổn thương.


Kết nối từ xa của bạn sẽ bị hỏng nếu:

    Thì
  • Điện thoại reboot
  • Thì
  • Mạng Wi-Fi thay đổi
  • Thì
  • Chế độ Developer Mode hoặc USB Debugging bị vô hiệu hóa.
  • Thì
  • Thiết bị chạy quá lâu mà không có hoạt động ADB (một số hệ thống tự động bắt đầu kết nối không hoạt động).
  • Thì
  • Và nhiều người khác...
  • Thì


Vì vậy, nếu kịch bản ngừng hoạt động, chỉ cần lặp lại các bước từ“Tạo kết nối của bạn”:

    Thì
  1. Kết nối thiết bị di động bằng dây với máy tính cá nhân của bạn.
  2. Thì
  3. Lệnh adb tcpip 5555 adb tcpip 5555
  4. Thì
  5. Và chạy adb connect <DEVICE_IP>:5555
  6. Thì
adb connect 10.0.0.108:5555

Và bạn sẽ trở lại trong kinh doanh.

Suy nghĩ cuối cùng

Hack này không phải là về việc giữ im lặng niềm vui của con bạn. nó là về việc bảo vệ giấc ngủ của họ - và trí tuệ của bạn - khỏi những bất ngờ công nghệ bất ngờ.


Đây có thể là một kịch bản nhỏ, nhưng đối với gia đình tôi và tôi, nó đã thay đổi cuộc sống. Không còn thức dậy 2 AM trên YouTube. Không còn những buổi sáng nhạt nhẽo. Chỉ là những đêm yên bình và một chút tinh tế của tự động hóa làm cha mẹ.


    Thì
  • Có phải là một chút hack không?
  • Thì
  • Nó có hoạt động đáng tin cậy không?
  • Thì
  • Về mặt kỹ thuật, có, nhưng nó hoạt động trong khu vực màu xám (các quyền truy cập ADB và điều khiển tự động không được chính thức hỗ trợ bởi Google cho người dùng cuối).
  • Thì
  • Miễn là nó giúp một phụ huynh mệt mỏi (hoặc thậm chí chính bạn) ngủ ngon hơn - nó đáng giá.
  • Thì
  • Nó là tinh tế.
  • Thì
  • Nó vô hình.
  • Thì
  • Và nó hoạt động.
  • Thì


Hãy cho tôi biết nếu bạn muốn mã nguồn, thiết lập một cú nhấp chuột, hoặc phiên bản cải tiến.


Và hey - ngủ ngon. bạn đã kiếm được nó.

Thì

P.S. Giải pháp này có thể được cải thiện và mở rộng - ví dụ, thiết lập một lịch trình, thích ứng với các hồ sơ khác nhau, theo dõi hoạt động của thiết bị, vv Nhưng ngay cả ở dạng cơ bản, nó đã giải quyết vấn đề chính: nó giúp bạn ngủ - và ngủ yên bình.

Thì

P.S. Giải pháp này có thể được cải thiện và mở rộng - ví dụ, thiết lập một lịch trình, thích ứng với các hồ sơ khác nhau, theo dõi hoạt động của thiết bị, vv Nhưng ngay cả ở dạng cơ bản, nó đã giải quyết vấn đề chính: nó giúp bạn ngủ - và ngủ yên bình.


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks